Computer networks utilize switches to route network traffic. In particular, an ingress port of a switch routes a packet of network traffic to an egress port of the switch based upon the destination address specified by the packet. In some instances there may be several egress ports that can be used to route a packet. Currently, switches route a packet from an ingress port to an egress port without considering a number of factors that could lead to improved switch performance. For example, known switches fail to assess load distribution, over-subscription, and fragmentation issues.
In the case of load distribution, the dynamic alteration of network topologies makes load distribution difficult. Nevertheless, the operation of a switch can be vastly improved if load balance issues are addressed in an efficient manner.
The operation of a switch can also be improved if the traffic to an egress port is not over-subscribed. A port is over-subscribed if the output traffic bandwidth assigned to the port is larger than the bandwidth of the port. The issue of over-subscription must be solved in the context of a switch, in which resources are changing in a dynamic manner, as host and target devices linked to the switch come on and off line.
Fragmentation is another important consideration for a switch. Fragmentation occurs at an egress port when output traffic bandwidth associated with the egress port does not fully occupy the available bandwidth of the egress port. As a result, the egress port is not fully utilized, or additional traffic must be assigned to the port in order to fully utilize the egress port. The issue of fragmentation is difficult to solve in the context of a switch that has dynamically changing ingress and egress bandwidth resources.
Load distribution, over-subscription, and fragmentation issues can be addressed by communicating between switches. Unfortunately, this approach introduces complexity and expense into a network. This approach is also problematic in that it requires the switches within the network to be compatible.
In view of the foregoing, it would be highly desirable to provide an improved switch that facilitates dynamic load distribution, while avoiding over-subscription and fragmentation. Such a switch would ideally operate in an autonomous manner so that its operation was not contingent upon passing information to adjacent switches. Further, such a switch should be compatible with other network switches that do not support the same features.